package com.pianzhu.blockchainemr.service;

import com.pianzhu.blockchainemr.pojo.*;
import com.pianzhu.blockchainemr.pojo.Param.ChangeVisitStatusParam;
import com.pianzhu.blockchainemr.pojo.Param.EmpowerParam;
import com.pianzhu.blockchainemr.pojo.result.MedicalRecordListResult;
import com.pianzhu.blockchainemr.pojo.result.MedicalReportListResult;
import com.pianzhu.blockchainemr.pojo.result.PageResult;
import com.pianzhu.blockchainemr.pojo.result.PatientResult;
import java.util.List;

public interface DoctorService {
    /**
     * 分页获取我的患者列表
     */
    PageResult<PatientResult> getMyPatients(Long doctorId, Integer pageNum, Integer pageSize,
                                            String patientName, String visitId);

    /**
     * 获取患者总数
     */
    Long getMyPatientsCount(Long doctorId);

    void changeVisitStatus(ChangeVisitStatusParam param);

    List<MedicalRecordListResult> getMedicalRecord(String visitId, Integer doctorId);

    void requestEmpower(EmpowerParam empowerParam);

    String getChiefComplaint(String visitId);

    List<MedicalReportListResult> getMedicalReport(String visitId, Integer doctorId);

    void requestMedicalReportEmpower(EmpowerParam empowerParam);

    List<PatientResult> searchPatients(Long doctorId, String keyword);

    void newMedicalRecord(EmrDocuments emrDocuments);

    /**
     * 新建检查检验报告
     */
    void newMedicalReport(EmrExamReports emrExamReports);

    List<EmrExamItemDict> getItemList();

    List<EmrMedOrders> getPrescriptionList(String patientId);

    void createPrescription(EmrMedOrders emrMedOrders);

    EmrPatMaster getPatientInfo(String patientId);

    List<EmrDrugDict> getDrugList();

    List<EmrMedVisit> getVisitList(String patientId, Integer doctorId);

    List<EmrMedOrders> getMyPrescriptionList(String doctorId);

    void deletePrescription(EmrMedOrders emrMedOrders);

    void updatePrescription(EmrMedOrders emrMedOrders);
}